package com.danbay.cloud.device.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * 设备相关配置参数
 * @author SJG
 *         2017/11/30.
 */
@Data
@Configuration
@ConfigurationProperties(prefix = "device.config")
public class DeviceConfig {

    /**
     * 设备读数精度
     */
    private Precision precision;

    @Data
    public static class Precision{

        /**
         * 电表电能量精度
         * 2位小数
         */
        private Integer kwh=2;

        /**
         * 取电表电能量精度百分比
         * @return 百分比
         */
        public Double getKwhPercent(){
            return Math.pow(10,-kwh);
        }

        /**
         * 电表电压精度
         * 1位小数
         */
        private Integer volt=1;

        /**
         * 取电表电压精度百分比
         * @return 百分比
         */
        public Double getVoltPercent(){
            return Math.pow(10,-volt);
        }

        /**
         * 电表设备电流精度
         * 3位小数
         */
        private Integer current=3;

        /**
         * 取电表设备电流精度百分比
         * @return 百分比
         */
        public Double getCurrentPercent(){
            return Math.pow(10,-current);
        }

        /**
         * 电表功率因素精度
         * 3位小数
         */
        private Integer powerFactor=3;

        /**
         * 取电表功率因素精度百分比
         * @return 百分比
         */
        public Double getPowerFactorPercent(){
            return Math.pow(10,-powerFactor);
        }

        /**
         * 电表功率精度
         * 4位小数
         */
        private Integer power=4;

        /**
         * 取电表功率精度百分比
         * @return 百分比
         */
        public Double getPowerPercent(){
            return Math.pow(10,-power);
        }

        /**
         * 水量精度
         * 0位小数
         */
        private Integer water=0;

        /**
         * 取水量精度百分比
         * @return 百分比
         */
        public Double getWaterPercent(){
            return Math.pow(10,-water);
        }
    }
}
